import axios from 'axios'
import {useTokenStore} from "@/store/token.js";
import router from "@/router/index.js";
import {ElMessage} from "element-plus";

//定义一个变量,记录公共的前缀 baseURL
//const baseURL = 'http://localhost:8080'
const baseURL = '/api'
//这个service和axios具有相同的功能
const service = axios.create({baseURL})

//添加请求拦截器
service.interceptors.request.use(
    config => {
        if (useTokenStore().token){
            //目前的理解是,如果这个useTokenStore().token存在的话,就把这个token存到浏览器的请求头的什么Authorization里
            //但是这个token是从哪里传过来的呢?
            config.headers.Authorization = useTokenStore().token
        }
        return config//为什么要return config
    },
    error => {
        return Promise.reject(error)
    }
)
//添加响应拦截器
service.interceptors.response.use(
    response => {
        return response.data;
    },
    error => {
        //判断响应状态码,如果为401,则证明未登录,提示请登录,并跳转到登录页面
        if (error.response.status === 401) {
            ElMessage.error('请先登录')
            router.push('/login')
        } else {
            ElMessage.error('服务异常')
        }

        return Promise.reject(error);//异步的状态转化成失败的状态??这是干嘛的??
    }
)

export default service;